--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / scripts / ci / github-install-macos-x64-python-deps.sh
Displaying Raw • Download
scripts/ci/github-install-macos-x64-python-deps.sh d32040be7798760d2b1c0181b62dee0571f8ace0 (d32040be) Text, 5.98 KB
T8b949e#!/usr/bin/env bash
T8b949e# Install locked Python deps for the darwin-x64 cx_Freeze slice on Apple Silicon CI.
T8b949e# The arm64 slice uses uv sync into .venv; this script mirrors that with .venv-x64 so
T8b949e# NumPy/LXST native wheels match the lockfile instead of unpinned pip -e . resolution.
Tffa657set -euo pipefail
Te6edf3ROOTTff7b72=Ta5d6ff"Tff7b72$(Tffa657cd Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/../..Ta5d6ff" Tff7b72&& Tffa657pwdTff7b72)Ta5d6ff"
Tffa657cd Ta5d6ff"Te6edf3$ROOTTa5d6ff"
Te6edf3PY_X64Tff7b72=Ta5d6ff"Tffd700${Te6edf3PY_X64Tb4b4b4:Tb4b4b4?PY_X64 must point at an x86_64 Python 3.14 interpreterTffd700}Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ Ta5d6ff"Tff7b72$(uname -sTff7b72)Ta5d6ff" !Tff7b72= Ta5d6ff"Darwin" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"github-install-macos-x64-python-deps: skipping (not macOS)" >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff0
Tff7b72fi
Tffa657export Te6edf3UV_PROJECT_ENVIRONMENTTff7b72=Ta5d6ff"Tffd700${Te6edf3ROOTTffd700}Ta5d6ff/.venv-x64Ta5d6ff"
Tffa657export Te6edf3UV_PYTHON_INSTALL_DIRTff7b72=Ta5d6ff"Tffd700${Te6edf3ROOTTffd700}Ta5d6ff/.cache/uv/pythonTa5d6ff"
uv lock --check
Tff7b72if Tff7b72[Tff7b72[ -x /usr/local/bin/brew Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
arch -x86_64 /usr/local/bin/brew install openssl@3
Tff7b72fi
Te6edf3_codec2Tff7b72=Ta5d6ff"Tff7b72$(arch -x86_64 /usr/local/bin/brew --prefix codec2 T79c0ff2>/dev/null Tff7b72|| Tffa657trueTff7b72)Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -n Ta5d6ff"Te6edf3$_codec2Ta5d6ff" Tff7b72&& -d Ta5d6ff"Tffd700${Te6edf3_codec2Tffd700}Ta5d6ff/includeTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657export Te6edf3LDFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3LDFLAGSTff7b72:-Tffd700}Ta5d6ff -LTffd700${Te6edf3_codec2Tffd700}Ta5d6ff/lib -arch x86_64Ta5d6ff"
Tffa657export Te6edf3CPPFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3CPPFLAGSTff7b72:-Tffd700}Ta5d6ff -ITffd700${Te6edf3_codec2Tffd700}Ta5d6ff/include -arch x86_64Ta5d6ff"
Tffa657export Te6edf3PKG_CONFIG_PATHTff7b72=Ta5d6ff"Tffd700${Te6edf3_codec2Tffd700}Ta5d6ff/lib/pkgconfig:Tffd700${Te6edf3PKG_CONFIG_PATHTff7b72:-Tffd700}Ta5d6ff"
Tff7b72fi
Tff7b72if arch -x86_64 /usr/local/bin/brew --prefix openssl@3 >/dev/null T79c0ff2>Tb4b4b4&T79c0ff1Tb4b4b4; Tff7b72then
Te6edf3_opensslTff7b72=Ta5d6ff"Tff7b72$(arch -x86_64 /usr/local/bin/brew --prefix openssl@3Tff7b72)Ta5d6ff"
Tffa657export Te6edf3LDFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3LDFLAGSTff7b72:-Tffd700}Ta5d6ff -LTffd700${Te6edf3_opensslTffd700}Ta5d6ff/lib -arch x86_64Ta5d6ff"
Tffa657export Te6edf3CPPFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3CPPFLAGSTff7b72:-Tffd700}Ta5d6ff -ITffd700${Te6edf3_opensslTffd700}Ta5d6ff/include -arch x86_64Ta5d6ff"
Tffa657export Te6edf3PKG_CONFIG_PATHTff7b72=Ta5d6ff"Tffd700${Te6edf3_opensslTffd700}Ta5d6ff/lib/pkgconfig:Tffd700${Te6edf3PKG_CONFIG_PATHTff7b72:-Tffd700}Ta5d6ff"
Tffa657export Te6edf3OPENSSL_DIRTff7b72=Ta5d6ff"Tffd700${Te6edf3_opensslTffd700}Ta5d6ff"
Tffa657export Te6edf3OPENSSL_LIB_DIRTff7b72=Ta5d6ff"Tffd700${Te6edf3_opensslTffd700}Ta5d6ff/libTa5d6ff"
Tffa657export Te6edf3OPENSSL_INCLUDE_DIRTff7b72=Ta5d6ff"Tffd700${Te6edf3_opensslTffd700}Ta5d6ff/includeTa5d6ff"
Tff7b72fi
Tffa657export Te6edf3ARCHFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3ARCHFLAGSTff7b72:-Tb4b4b4-arch x86_64Tffd700}Ta5d6ff"
Tffa657export Te6edf3CCTff7b72=Ta5d6ff"Tffd700${Te6edf3CCTff7b72:-Te6edf3clangTb4b4b4 -arch x86_64Tffd700}Ta5d6ff"
Tffa657export Te6edf3CXXTff7b72=Ta5d6ff"Tffd700${Te6edf3CXXTff7b72:-Te6edf3clangTb4b4b4++ -arch x86_64Tffd700}Ta5d6ff"
Tffa657export Te6edf3CFLAGSTff7b72=Ta5d6ff"Tffd700${Te6edf3CFLAGSTff7b72:-Tb4b4b4-arch x86_64Tffd700}Ta5d6ff"
Te6edf3_PYTff7b72=Ta5d6ff"Tffd700${Te6edf3UV_PROJECT_ENVIRONMENTTffd700}Ta5d6ff/bin/pythonTa5d6ff"
_lock_versionTff7b72(Tff7b72) Tff7b72{
awk -v Te6edf3pkgTff7b72=Ta5d6ff"Te6edf3$1Ta5d6ff" Ta5d6ff'
$0 == "name = \"" pkg "\"" { found=1; next }
found && /^version = / {
sub(/^version = "/, "", $0)
sub(/"$/, "", $0)
print $0
exit
}
' uv.lock
Tff7b72}
Te6edf3_NUMPY_VERSIONTff7b72=Ta5d6ff"Tff7b72$(_lock_version numpyTff7b72)Ta5d6ff"
Te6edf3_PYCODEC2_VERSIONTff7b72=Ta5d6ff"Tff7b72$(_lock_version pycodec2Tff7b72)Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -z Ta5d6ff"Te6edf3$_NUMPY_VERSIONTa5d6ff" Tff7b72|| -z Ta5d6ff"Te6edf3$_PYCODEC2_VERSIONTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"github-install-macos-x64-python-deps: failed to read numpy/pycodec2 versions from uv.lock" >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi
T8b949e# Host is arm64; without --python-platform uv still resolves macOS wheels for aarch64.
T8b949e# pycodec2 has no cp314 macOS x86_64 wheel, so uv would build it from sdist and pull
T8b949e# numpy into an isolated cross build (meson: "Can not run test applications").
uv sync --frozen --group dev Tffea00\
--python Ta5d6ff"Te6edf3$PY_X64Ta5d6ff" Tffea00\
--python-platform x86_64-apple-darwin Tffea00\
--no-install-package pycodec2
uv pip install --python Ta5d6ff"Te6edf3$_PYTa5d6ff" Tffea00\
--python-platform x86_64-apple-darwin Tffea00\
Ta5d6ff"Ta5d6ffnumpy==Tffd700${Te6edf3_NUMPY_VERSIONTffd700}Ta5d6ff"
T8b949e# pycodec2's sdist imports Cython directly in setup.py but does not declare it
T8b949e# under build-system.requires, so a build needs it preinstalled in the venv.
T8b949e# "wheel" registers the bdist_wheel setuptools command used below.
uv pip install --python Ta5d6ff"Te6edf3$_PYTa5d6ff" Tffea00\
--python-platform x86_64-apple-darwin Tffea00\
Ta5d6ff"Cython>=3.1.4" wheel
T8b949e# Host uv is arm64, so "uv pip install --no-build-isolation" would spawn "$_PY"
T8b949e# (a universal2 binary) with uv's own (arm64) architecture preference. Cython's
T8b949e# native extension is installed as x86_64-only, so the arm64-loaded interpreter
T8b949e# fails to dlopen it ("incompatible architecture"). Building the wheel ourselves
T8b949e# lets us force x86_64 on the one interpreter invocation that runs native code
T8b949e# (via `arch -x86_64`), then hand uv a finished wheel to install, which is a
T8b949e# plain file copy where uv's own architecture no longer matters.
_lock_sdist_urlTff7b72(Tff7b72) Tff7b72{
awk -v Te6edf3pkgTff7b72=Ta5d6ff"Te6edf3$1Ta5d6ff" Ta5d6ff'
$0 == "name = \"" pkg "\"" { found=1; next }
found && /^sdist = / { print; exit }
' uv.lock Tb4b4b4| sed -n Ta5d6ff's/.*url = "\([^"]*\)".*/\1/p'
Tff7b72}
Te6edf3_PYCODEC2_SDIST_URLTff7b72=Ta5d6ff"Tff7b72$(_lock_sdist_url pycodec2Tff7b72)Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -z Ta5d6ff"Te6edf3$_PYCODEC2_SDIST_URLTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"github-install-macos-x64-python-deps: failed to read pycodec2 sdist url from uv.lock" >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi
Te6edf3_pycodec2_build_dirTff7b72=Ta5d6ff"Tff7b72$(mktemp -dTff7b72)Ta5d6ff"
Tffa657trap Ta5d6ff'rm -rf "$_pycodec2_build_dir"' EXIT
curl -fsSL Ta5d6ff"Te6edf3$_PYCODEC2_SDIST_URLTa5d6ff" -o Ta5d6ff"Tffd700${Te6edf3_pycodec2_build_dirTffd700}Ta5d6ff/pycodec2.tar.gzTa5d6ff"
tar xzf Ta5d6ff"Tffd700${Te6edf3_pycodec2_build_dirTffd700}Ta5d6ff/pycodec2.tar.gzTa5d6ff" -C Ta5d6ff"Te6edf3$_pycodec2_build_dirTa5d6ff"
Te6edf3_pycodec2_src_dirTff7b72=Ta5d6ff"Tff7b72$(find Ta5d6ff"Te6edf3$_pycodec2_build_dirTa5d6ff" -maxdepth T79c0ff1 -type d -name Ta5d6ff'pycodec2-*'Tff7b72)Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -z Ta5d6ff"Te6edf3$_pycodec2_src_dirTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"github-install-macos-x64-python-deps: pycodec2 sdist did not extract as expected" >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi
Tff7b72(Tffa657cd Ta5d6ff"Te6edf3$_pycodec2_src_dirTa5d6ff" Tff7b72&& arch -x86_64 Ta5d6ff"Te6edf3$_PYTa5d6ff" setup.py bdist_wheel -d Ta5d6ff"Tffd700${Te6edf3_pycodec2_build_dirTffd700}Ta5d6ff/distTa5d6ff"Tff7b72)
Te6edf3_pycodec2_wheelTff7b72=Ta5d6ff"Tff7b72$(find Ta5d6ff"Tffd700${Te6edf3_pycodec2_build_dirTffd700}Ta5d6ff/distTa5d6ff" -maxdepth T79c0ff1 -name Ta5d6ff'pycodec2-*.whl'Tff7b72)Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -z Ta5d6ff"Te6edf3$_pycodec2_wheelTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"github-install-macos-x64-python-deps: pycodec2 wheel build produced no output" >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi
uv pip install --python Ta5d6ff"Te6edf3$_PYTa5d6ff" Tffea00\
--python-platform x86_64-apple-darwin Tffea00\
Ta5d6ff"Te6edf3$_pycodec2_wheelTa5d6ff"
Tff7b72if Tff7b72[Tff7b72[ -n Ta5d6ff"Tffd700${Te6edf3_codec2Tff7b72:-Tffd700}Ta5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3_pycodec2_dirTff7b72=Ta5d6ff"Tff7b72$(arch -x86_64 Ta5d6ff"Te6edf3$_PYTa5d6ff" -c Ta5d6ff'import pathlib, pycodec2; print(pathlib.Path(pycodec2.__file__).resolve().parent)'Tff7b72)Ta5d6ff"
Tff7b72for _lib Tff7b72in Ta5d6ff"Tffd700${Te6edf3_codec2Tffd700}Ta5d6ff/lib/libcodec2.dylibTa5d6ff" Ta5d6ff"Tffd700${Te6edf3_codec2Tffd700}Ta5d6ff/lib/libcodec2.soTa5d6ff"Tb4b4b4; Tff7b72do
Tff7b72if Tff7b72[Tff7b72[ -f Ta5d6ff"Te6edf3$_libTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
cp -f Ta5d6ff"Te6edf3$_libTa5d6ff" Ta5d6ff"Tffd700${Te6edf3_pycodec2_dirTffd700}Ta5d6ff/libcodec2.soTa5d6ff"
Tff7b72if Tff7b72[Tff7b72[ Ta5d6ff"Te6edf3$_libTa5d6ff" Tff7b72=Tff7b72= *.dylib Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
cp -f Ta5d6ff"Te6edf3$_libTa5d6ff" Ta5d6ff"Tffd700${Te6edf3_pycodec2_dirTffd700}Ta5d6ff/libcodec2.dylibTa5d6ff"
Tff7b72fi
Tff7b72break
Tff7b72fi
Tff7b72done
Tff7b72fi
arch -x86_64 Ta5d6ff"Te6edf3$_PYTa5d6ff" scripts/patch_lxst_pyogg_ogg_ctypes.py
arch -x86_64 Ta5d6ff"Te6edf3$_PYTa5d6ff" -c Ta5d6ff"
import importlib.metadata
import numpy
import pycodec2
from numpy._core._multiarray_umath import _add_newdoc_ufunc
print('x64 venv numpy', numpy.__version__, 'pycodec2', importlib.metadata.version('pycodec2'), 'ok')
"
Tff7b72if Tff7b72[Tff7b72[ -n Ta5d6ff"Tffd700${Te6edf3GITHUB_ENVTff7b72:-Tffd700}Ta5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffPYTHON_CMD_X64=Tffd700${Te6edf3UV_PROJECT_ENVIRONMENTTffd700}Ta5d6ff/bin/pythonTa5d6ff" >>Ta5d6ff"Te6edf3$GITHUB_ENVTa5d6ff"
Tff7b72fi
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────